package com.hczt.springcloud.oauthresource.controller;

import org.springframework.cache.annotation.Cacheable;
import org.springframework.security.access.prepost.PreAuthorize;
import org.springframework.web.bind.annotation.*;

import java.security.Principal;

/**
 * 精诚所至，金石为开。
 * 石の上にも三年;陽気の発する所金石亦透る。
 * Faith moves mountains.
 *
 * @author marvin.ma
 * @create 2018-01-23 22:18
 * @desc 权限测试
 **/
@RestController
public class AccountController {

    @GetMapping("/current")
    public Principal user(Principal principal) {
        return principal;
    }

    @GetMapping("/query")
    @PreAuthorize("hasAnyAuthority('query')")
    public String query() {
        return "具有query权限";
    }

    /**
     * 这个接口可以缓存，并且每个 IP/User 每秒最多请求 10 次
     */
    @Cacheable
    //@RateLimiting(limit = "10/1s", scope = {IP, USER})
    @RequestMapping(value = "/user/{id}", method = RequestMethod.GET)
    public void info(@PathVariable int id) {

    }
}
